
Nombre:
VirusScan
Versión:
4.0.3
Editor:
McAfee
Víctima:
NAVW32.EXE
Herramientas:
W32Dasm v8.93
HIEW v6.16
Cerebro
Cracker:
LW2000
Tutorial:
número 15
URL:
ftp://ftp.nai.com/pub/antivirus/win95/
Renuncia: Este tutorial tiene una finalidad únicamente
educativa. No asumo ninguna responsabilidad por el mal uso de éste material.
1.
McAfee AntiVirus no tiene opción de introducir
ningún tipo de Registration Code, pero vemos que en la ‘About’ box se nos
dice: “About McAfee VirusScan Evaluation Copy.”
2.
Anotamos éste texto. Cargamos W32Dasm
con VirusScan y vamos a las String Data References. Hacemos doble click en
“About McAfee VirusScan Evaluation Copy” y cerramos la ventana SDR:
* Possible Reference to Dialog:
DialogID_0067, CONTROL_ID:0452,
"McAfee VirusScan"
|
:004014CD 6852040000
push 00000452
:004014D2 55
push ebp
:004014D3 FFD6 call
esi
:004014D5 50
push eax
:004014D6 FFD7 call
edi
:004014D8 8D842470010000 lea eax, dword ptr [esp+00000170]
:004014DF 6804010000
push 00000104
:004014E4 50
push eax
:004014E5 E8F6E30000
call 0040F8E0
:004014EA 83C408
add esp, 00000008
:004014ED 85C0 test
eax, eax
:004014EF 7411
je 00401502 >Primera comprobación
:004014F1 8D4C246C lea ecx, dword ptr [esp+6C]
:004014F5 6804010000
push 00000104
:004014FA 51
push ecx
* Possible Reference to String
Resource ID=40120:
"About McAfee VirusScan
OEM Edition"
|
:004014FB 68B89C0000
push 00009CB8
:00401500 EB27 jmp
00401529
* Referenced by a (U)nconditional
or (C)onditional Jump at Address:
|:004014EF(C)
|
:00401502 8B842488040000 mov eax, dword ptr [esp+00000488]
:00401509 6804010000
push 00000104
:0040150E 83F801 cmp eax, 00000001
:00401511 750C jne
0040151F >Salta a Evaluation
>Version
:00401513 8D542470 lea edx, dword ptr [esp+70]
:00401517 52
push edx
* Possible Reference to String
Resource ID=40102: "About McAfee VirusScan"
|
:00401518 68A69C0000
push 00009CA6
:0040151D EB0A jmp
00401529
* Referenced by a (U)nconditional
or (C)onditional Jump at Address:
|:00401511(C)
|
:0040151F 8D442470 lea eax, dword ptr [esp+70]
:00401523 50
push eax
* Possible Reference to String
Resource ID=40103:
"About McAfee VirusScan
Evaluation Copy"
3.
En la dirección ‘004014EF’ podemos ver
una primera comprobación. Si ésta comprobación falla, nuestra ‘criaturita’
salta a la versión OEM. ¡Hey, no queremos que suceda eso! ¡Vamos a corregirlo!
Creo que usted sabrá cómo hacerlo … (Anotamos el offset, arrancamos HIEW,
vamos al offset, cambiamos el ‘JE ‘ a ‘JMP’, guardamos …)
4.
Pero, todavía tenemos una segunda comprobación
en la línea ‘00401511’. ¡Vamos a corregirla también! ¡La ponemos a NOP! (Anotamos
el offset, arrancamos HIEW, vamos al offset, cambiamos el ‘750C’ a ‘9090’,
guardamos …)
5.
Parece que funciona correctamente, pero
después de los 30 días de prueba nuestra ‘criaturita’ muestra un mensaje de
deja de ejecutarse.
6.
Anotamos el mensaje y hacemos click en
la ventana SDR. Hacemos doble click en nuestro mensaje y cerramos la ventana
SDR. Esto es lo que nos encontraremos:
* Referenced by a (U)nconditional
or (C)onditional Jump at Address:
|:0040F55F(C)
|
* Possible StringData Ref
from Data Obj ->"ECLicenseFunction"
|
:0040F56E 68C4794300
push 004379C4
:0040F573 53
push ebx
* Reference To: KERNEL32.GetProcAddress,
Ord:0116h
|
:0040F574 FF1578E84300 Call dword ptr [0043E878]
:0040F57A 8BD8 mov
ebx, eax
:0040F57C 85DB test
ebx, ebx
:0040F57E 0F84BE000000 je 0040F642
:0040F584 E8B7020000
call 0040F840
:0040F589 85C0 test
eax, eax
:0040F58B 7510 jne
0040F59D
:0040F58D 8B842428020000 mov eax, dword ptr [esp+00000228]
:0040F594 85C0 test
eax, eax
* Possible Reference to String
Resource ID=00002: "In Folder"
|
:0040F596 B802000000
mov eax, 00000002
:0040F59B 7405 je
0040F5A2
* Referenced by a (U)nconditional
or (C)onditional Jump at Address:
|:0040F58B(C)
|
* Possible Reference to String
Resource ID=00005: "&Clean File"
|
:0040F59D B805000000
mov eax, 00000005
* Referenced by a (U)nconditional
or (C)onditional Jump at Address:
|:0040F59B(C)
|
:0040F5A2 8D4C2470 lea ecx, dword ptr [esp+70]
:0040F5A6 8D542418 lea edx, dword ptr [esp+18]
:0040F5AA 51
push ecx
:0040F5AB 52
push edx
:0040F5AC 8D8C2488000000 lea ecx, dword ptr [esp+00000088]
:0040F5B3 6814BF4300
push 0043BF14
:0040F5B8 51
push ecx
:0040F5B9 56
push esi
:0040F5BA 50
push eax
:0040F5BB FFD3 call
ebx
:0040F5BD 8B44242C mov eax, dword ptr [esp+2C]
:0040F5C1 83C418 add esp, 00000018
:0040F5C4 85C0 test
eax, eax
:0040F5C6 7410 je
0040F5D8
:0040F5C8 837C247803
cmp dword ptr [esp+78], 00000003
:0040F5CD 7509 jne
0040F5D8
* Possible Reference to String
Resource ID=00100: "YES"
|
:0040F5CF C7400864000000 mov [eax+08], 00000064
:0040F5D6 EB6A jmp
0040F642
* Referenced by a (U)nconditional
or (C)onditional Jump at Addresses:
|:0040F5C6(C), :0040F5CD(C)
|
:0040F5D8 837C247001
cmp dword ptr [esp+70], 00000001
:0040F5DD 7563 jne
0040F642
:0040F5DF 8D942420010000 lea edx, dword ptr [esp+00000120]
:0040F5E6 6800010000
push 00000100
:0040F5EB 52
push edx
* Possible Reference to String
Resource ID=03145:
"The program license
has expired. You must purchase to conti"
7.
Nos desplazamos hacia arriba para ver
desde donde se llama al mensaje y vemos dos referencias. Dos saltos; el primero
en ‘0040F5C6’ y el segundo en ‘0040F5CD’. Después vemos ‘0040F5D6 JMP 0040F642’
que es el salto al arranque del programa. Desde aquí se salta al trozo de
código que hace aparecer la messageBox. En ‘0040F58B’ hay otra comprobación.
Aquí pondremos el salto al arranque del programa (‘JMP 0040F642’). Haciendo
esto nos cargamos la messageBox y nuestra ‘criaturita’ puede ser usada más
allá del ‘Trial Time’.
¡Enhorabuena! ¡Ya es un usuario registrado!
¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme
un email a LW2000@gmx.net.
o vaya a http://www.LW2000.cjb.net
Gracias a tKC por sus tutoriales. Empecé leyendo su
primer tutorial y todavía sigo leyéndolos.
Traducción de: MeGaBiTe